from flask import Flask, request, jsonify, render_template
from flask_cors import CORS  # 导入CORS以处理跨域请求
import json

# 导入已有的规划器逻辑
from planner import GoalPlanner

# 初始化Flask应用
app = Flask(__name__, template_folder='templates', static_folder='static')
CORS(app)  # 允许所有来源的跨域请求，便于开发

@app.route('/')
def index():
    """
    渲染主HTML页面。
    """
    return render_template('index.html')

@app.route('/api/plan', methods=['POST'])
def get_plan():
    """
    处理规划生成请求的API端点。
    """
    try:
        data = request.json
        if not data or 'goal' not in data or 'domain' not in data:
            return jsonify({"error": "请求数据不完整，必须包含'goal'和'domain'字段。"}), 400

        goal = data.get('goal')
        domain = data.get('domain')
        
        # 模拟的用户画像和约束，未来可以从前端传递更多信息
        user_profile = {"user_id": "web_user_01", "source": "web_interface"}
        constraints = "由Web用户提交，请生成一个通用但逻辑清晰的规划。"

        # 初始化并运行规划器
        planner = GoalPlanner(user_profile)
        plan = planner.generate_plan(goal, constraints, domain)

        # 检查规划器是否返回错误
        if "error" in plan:
            return jsonify(plan), 500

        return jsonify(plan)

    except Exception as e:
        # 捕获任何潜在的服务器错误
        print(f"服务器错误: {e}")
        return jsonify({"error": "服务器内部错误，无法生成规划。"}), 500

if __name__ == '__main__':
    # 启动服务器，可以通过 http://127.0.0.1:5000 访问
    app.run(debug=True, port=5000)
